package se.webbzon.oschi01.nbt;

public interface Tag<T> extends TagSibling, Cloneable {
	
	public void setValue(T value);
	
	public T getValue();
	
	public Class<T> getValueClass();
	
	public void setName(String name);
	
	public boolean canAdopt(Tag<?> child);
	
	public TagFactory<T> getFactory();
	
	public long size();
	
	public void addListener(TagListener listener);
	
	public void removeListener(TagListener listener);
	
	public void broadcastEvent(TagEvent event);
	
	public Tag<T> clone();

}
